There is a continually increasing number of terminals and mobile devices in use today, such as smart phones, PDAs with wireless communication capabilities, personal computers, self service kiosks and two-way pagers/communication devices. Software applications which run on these devices increase their utility. For example, a smart phone may include an application which retrieves the weather for a range of cities, or a PDA may include an application that allows a user to shop for groceries. These software applications take advantage of the connectivity to a network in order to provide timely and useful services to users. However, due to the restricted resources of some devices, and the complexity of delivering large amounts of data to the devices, developing and maintaining software applications tailored for a variety of devices remains a difficult and time-consuming task.
Currently, mobile communication devices are primarily configured to communicate with web-based applications, such as service oriented applications, through web browsers and/or native applications. Browsers have the advantage of being adaptable to operate on a cross-platform basis for a variety of different devices, but have a disadvantage of requesting pages (screen definitions in HTML) from the application, which hinders the persistence of data contained in the screens. A further disadvantage of browsers is that the screens are rendered at runtime, which can be resource intensive. Native applications have the advantage of being developed specifically for the type of mobile device, thereby providing a relatively optimized application program for each runtime environment. However, native applications have a disadvantage of not being platform independent, thereby necessitating the development of multiple versions of the same application, as well as being relatively large in size, thereby taxing the memory resources of the mobile device. Further, application developers need experience with programming languages such as Java and C++ to construct these hard-coded native applications. There is a need for application development environments that can assist in the development of applications for selected devices and terminals with their respective runtime environment, as well as being capable of assisting the selection from a variety of back-end data sources.
One popular form of application architecture is the two-tiered application characterized by two distinct entities —a client and a server —interacting in a way that produces a result for the user of the client. A well-known example of such an application is a web site whereby a client web-browser interacts with a web server. The role of the web server is to store and transmit a web page and the role of the web browser is to request the page from the server and render it for the user.
Current application development tools for two-tiered applications differentiate between the parts of an application that affect client behavior and those that affect server behavior. Some development tools focus on creating the client behavior and do not affect server behavior. By contrast, other development tools (e.g. Websphere™ from International Business Machine Corporation) facilitate the creation of complex server behavior. Although the result of the server behavior can affect client behavior, special mark-up tags are employed to make clear where the server part of the application ends and the client part begins.
Systems and methods disclosed herein provide a component-based application development environment to obviate or mitigate at least some of the above presented disadvantages.